package paq_negocio;

import com.sun.rowset.CachedRowSetImpl;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import paq_clase_interfaz.interfaz_alumno;
import paq_entidades.enti_alumno;
import paq_entidades.enti_promocion;
import paq_entidades.enti_tipo_usuario;
import paq_entidades.enti_usuario;
import paq_entidades.enti_variables;
import paq_sentencias.Ejecutarsql;

@Stateless
public class neg_alumno implements interfaz_alumno {

    enti_variables v = new enti_variables();
    Ejecutarsql ejec = new Ejecutarsql();
    enti_alumno entidad = new enti_alumno();
    enti_promocion promocion = new enti_promocion();
    enti_tipo_usuario tipoU = new enti_tipo_usuario();
    enti_usuario usuario = new enti_usuario();

    @Override
    public CachedRowSetImpl getlista(String cod) {
        try {
            v.crs2 = (CachedRowSetImpl) ejec.rellena2("select al.AL_CODIGO,(al.AL_NOMBRES  || ' ' ||al.al_apellidos) AS al_nombre from alumno al,PROMOCION pro, FECHA_DIA fd, PROFESOR prof where al.PROM_CODIGO=pro.PROM_CODIGO and pro.PROM_CODIGO= fd.PROM_CODIGO and fd.PR_CEDULA=prof.PR_CEDULA and prof.PR_CEDULA='" + cod + "'");
        } catch (Exception ex) {
            Logger.getLogger(neg_alumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs2;
    }

    @Override
    public void insertar(String prom_codigo, String al_nombres, String al_cedula, String al_direccion_trabajo, String al_direccion_casa, String al_telefono1, String al_telefono2, String al_especialidad, String al_fecha_nacimiento, String al_fecha_graduacion_pregrado, String al_cursos, String al_nacionalidad, String al_apellidos, String al_correo, String al_id, String genero) {
        promocion.setProm_codigo(prom_codigo);
        entidad.setPe_nombres(al_nombres);
        entidad.setPe_apellidos(al_apellidos);
        entidad.setPe_cedula(al_cedula);
        entidad.setPe_direccion_trabajo(al_direccion_trabajo);
        entidad.setPe_direccion_casa(al_direccion_casa);
        entidad.setPe_telefono1(al_telefono1);
        entidad.setPe_telefono2(al_telefono2);
        entidad.setPe_especialidad(al_especialidad);
        entidad.setPe_fecha_nacimiento(al_fecha_nacimiento);
        entidad.setFecha_graduacion_pregrado(al_fecha_graduacion_pregrado);
        entidad.setPe_cursos(al_cursos);
        entidad.setPe_nacionalidad(al_nacionalidad);
        entidad.setPe_email(al_correo);
        entidad.setPe_id(al_id);
        entidad.setGenero(genero);
        String sql = "insert into alumno (prom_codigo,al_nombres,al_apellidos,al_cedula,al_direccion_trabajo,al_direccion_casa,al_telefono1,al_telefono2,al_especialidad,al_fecha_nacimiento,al_fecha_graduacion_pregrado,al_cursos,al_nacionalidad,al_correo,al_id,al_genero) values('" + promocion.getProm_codigo() + "','" + entidad.getPe_nombres() + "','" + entidad.getPe_apellidos() + "','" + entidad.getPe_cedula() + "','" + entidad.getPe_direccion_trabajo() + "','" + entidad.getPe_direccion_casa() + "','" + entidad.getPe_telefono1() + "','" + entidad.getPe_telefono2() + "','" + entidad.getPe_especialidad() + "',to_date('" + entidad.getPe_fecha_nacimiento() + "','yyyy-mm-dd'), to_date('" + entidad.getFecha_graduacion_pregrado() + "','yyyy-mm-dd'),'" + entidad.getPe_cursos() + "','" + entidad.getPe_nacionalidad() + "','" + entidad.getPe_email() + "','" + entidad.getPe_id() + "','" + entidad.getGenero() + "')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void eliminar(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql1 = "delete from  soli_alumno where al_cedula='" + entidad.getPe_cedula() + "'";
        String sql = "delete from  alumno where al_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql1);
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void actualizar(String al_cedula, String al_correo, String al_id, String al_direccion_trabajo, String al_direccion_casa, String al_telefono1, String al_telefono2, String al_especialidad, String al_fecha_nacimiento, String al_fecha_graduacion_pregrado, String al_cursos, String al_nacionalidad, String al_genero) {
        entidad.setPe_cedula(al_cedula);
        entidad.setPe_email(al_correo);
        entidad.setPe_id(al_id);
        entidad.setPe_direccion_trabajo(al_direccion_trabajo);
        entidad.setPe_direccion_casa(al_direccion_casa);
        entidad.setPe_telefono1(al_telefono1);
        entidad.setPe_telefono2(al_telefono2);
        entidad.setPe_especialidad(al_especialidad);
        entidad.setPe_fecha_nacimiento(al_fecha_nacimiento);
        entidad.setFecha_graduacion_pregrado(al_fecha_graduacion_pregrado);
        entidad.setPe_cursos(al_cursos);
        entidad.setPe_nacionalidad(al_nacionalidad);
        entidad.setGenero(al_genero);
        String sql = "update alumno set al_correo='" + entidad.getPe_email() + "', al_id='" + entidad.getPe_id() + "',al_direccion_trabajo='" + entidad.getPe_direccion_trabajo() + "',al_direccion_casa='" + entidad.getPe_direccion_casa() + "',al_telefono1='" + entidad.getPe_telefono1() + "',al_telefono2='" + entidad.getPe_telefono2() + "',al_especialidad='" + entidad.getPe_especialidad() + "',al_fecha_nacimiento=to_date('" + entidad.getPe_fecha_nacimiento() + "','yyyy-mm-dd'),al_fecha_graduacion_pregrado=to_date('" + entidad.getFecha_graduacion_pregrado() + "','yyyy-mm-dd'),al_cursos='" + entidad.getPe_cursos() + "',al_nacionalidad='" + entidad.getPe_nacionalidad() + "',al_genero='" + entidad.getGenero() + "' where al_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl getcomboalumno() {
        try {
            v.crs = (CachedRowSetImpl) ejec.rellena2("select * from alumno");
        } catch (Exception ex) {
            Logger.getLogger(neg_alumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs;
    }

    @Override
    public CachedRowSetImpl getlistaa() {
        try {
            v.crs2 = (CachedRowSetImpl) ejec.rellena2("select * from alumno order by al_cedula desc");
        } catch (Exception ex) {
            Logger.getLogger(neg_alumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs2;
    }

    @Override
    public String getmensajei() {
        String sdr = "";
        sdr = v.msm;
        return sdr;
    }

    @Override
    public void actualizar1(String al_cedula, String prom_codigo, String al_nombres, String al_apellidos, String al_direccion_trabajo, String al_direccion_casa, String al_telefono1, String al_telefono2, String al_especialidad, String al_fecha_nacimiento, String al_fecha_graduacion_pregrado, String al_cursos, String al_nacionalidad, String al_correo, String id, String genero) {
        promocion.setProm_codigo(prom_codigo);
        entidad.setPe_cedula(al_cedula);
        entidad.setPe_nombres(al_nombres);
        entidad.setPe_apellidos(al_apellidos);
        entidad.setPe_direccion_trabajo(al_direccion_trabajo);
        entidad.setPe_direccion_casa(al_direccion_casa);
        entidad.setPe_telefono1(al_telefono1);
        entidad.setPe_telefono2(al_telefono2);
        entidad.setPe_especialidad(al_especialidad);
        entidad.setPe_fecha_nacimiento(al_fecha_nacimiento);
        entidad.setFecha_graduacion_pregrado(al_fecha_graduacion_pregrado);
        entidad.setPe_cursos(al_cursos);
        entidad.setPe_nacionalidad(al_nacionalidad);
        entidad.setPe_email(al_correo);
        entidad.setPe_id(id);
        entidad.setGenero(genero);
        String sql = "update alumno set prom_codigo='" + promocion.getProm_codigo() + "',al_direccion_trabajo='" + entidad.getPe_direccion_trabajo() + "',al_direccion_casa='" + entidad.getPe_direccion_casa() + "',al_telefono1='" + entidad.getPe_telefono1() + "',al_telefono2='" + entidad.getPe_telefono2() + "', al_especialidad='" + entidad.getPe_especialidad() + "',al_fecha_nacimiento= to_date('" + entidad.getPe_fecha_nacimiento() + "','yyyy-mm-dd'),al_fecha_graduacion_pregrado=to_date('" + entidad.getFecha_graduacion_pregrado() + "','yyyy-mm-dd'),al_cursos='" + entidad.getPe_cursos() + "',al_nacionalidad='" + entidad.getPe_nacionalidad() + "',al_correo='" + entidad.getPe_email() + "',al_id='" + entidad.getPe_id() + "',al_genero='" + entidad.getGenero() + "',al_nombres='" + entidad.getPe_nombres() + "', al_apellidos='" + entidad.getPe_apellidos() + "' where al_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void insertarAdmin(String prom_codigo, String al_nombres, String al_cedula, String al_direccion_trabajo, String al_direccion_casa, String al_telefono1, String al_telefono2, String al_especialidad, String al_fecha_nacimiento, String al_fecha_graduacion_pregrado, String al_cursos, String al_nacionalidad, String al_apellidos, String al_correo, String al_id, String genero) {
        promocion.setProm_codigo(prom_codigo);
        entidad.setPe_nombres(al_nombres);
        entidad.setPe_apellidos(al_apellidos);
        entidad.setPe_cedula(al_cedula);
        entidad.setPe_direccion_trabajo(al_direccion_trabajo);
        entidad.setPe_direccion_casa(al_direccion_casa);
        entidad.setPe_telefono1(al_telefono1);
        entidad.setPe_telefono2(al_telefono2);
        entidad.setPe_especialidad(al_especialidad);
        entidad.setPe_fecha_nacimiento(al_fecha_nacimiento);
        entidad.setFecha_graduacion_pregrado(al_fecha_graduacion_pregrado);
        entidad.setPe_cursos(al_cursos);
        entidad.setPe_nacionalidad(al_nacionalidad);
        entidad.setPe_email(al_correo);
        entidad.setPe_id(al_id);
        entidad.setGenero(genero);
        String sql = "insert into alumno (prom_codigo,al_nombres,al_apellidos,al_cedula,al_direccion_trabajo,al_direccion_casa,al_telefono1,al_telefono2,al_especialidad,al_fecha_nacimiento,al_fecha_graduacion_pregrado,al_cursos,al_nacionalidad,al_correo,al_id,al_genero,al_estado) values('" + promocion.getProm_codigo() + "','" + entidad.getPe_nombres() + "','" + entidad.getPe_apellidos() + "','" + entidad.getPe_cedula() + "','" + entidad.getPe_direccion_trabajo() + "','" + entidad.getPe_direccion_casa() + "','" + entidad.getPe_telefono1() + "','" + entidad.getPe_telefono2() + "','" + entidad.getPe_especialidad() + "',to_date('" + entidad.getPe_fecha_nacimiento() + "','yyyy-mm-dd'), to_date('" + entidad.getFecha_graduacion_pregrado() + "','yyyy-mm-dd'),'" + entidad.getPe_cursos() + "','" + entidad.getPe_nacionalidad() + "','" + entidad.getPe_email() + "','" + entidad.getPe_id() + "','" + entidad.getGenero() + "','Activo')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void insertarUsuario(String nombres, String apellidos, String nick, String tipoUsuario, String password, String correo, String extra) {
        entidad.setPe_nombres(nombres);
        entidad.setPe_apellidos(apellidos);
        entidad.setPe_cedula(nick);
        tipoU.setTu_codigo(tipoUsuario);
        entidad.setPe_passw(password);
        entidad.setPe_email(correo);
        usuario.setU_extra(extra);
        String sql = "insert into Usuario (u_nombre,u_apellido,u_nick,tu_codigo,u_password,u_correo,u_extraP,u_estado) values('" + entidad.getPe_nombres() + "','" + entidad.getPe_apellidos() + "','" + entidad.getPe_cedula() + "','tu862','Espe.2013','" + entidad.getPe_email() + "','" + usuario.getU_extra() + "','Activo')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl getLista_por_promocion(String promocion) {
        try {
            v.crs1 = (CachedRowSetImpl) ejec.rellena2("select * from ALUMNO al where al.PROM_CODIGO='" + promocion + "' order by al.AL_APELLIDOS asc");
        } catch (Exception ex) {
            System.out.println("Error al recuperar lista de datos");
        }
        return v.crs1;
    }

    @Override
    public CachedRowSetImpl datos_alumno(String cedula) {
        try {
            v.crs2 = (CachedRowSetImpl) ejec.rellena2("select (prog.PP_NOMBRE  || ' ' ||promo.PRO_NOMBRE || '__' || pl.pl_nombre)  AS PRO_NOMBRE,al.AL_NOMBRES,al.AL_CEDULA,al.AL_DIRECCION_TRABAJO,al.AL_DIRECCION_CASA,al.AL_TELEFONO1,al.AL_TELEFONO2,al.AL_ESPECIALIDAD,al.AL_FECHA_NACIMIENTO,al.AL_FECHA_GRADUACION_PREGRADO,al.AL_CURSOS,al.AL_NACIONALIDAD,al.AL_APELLIDOS,al.AL_CORREO,al.AL_ID,al.AL_GENERO,al.PROM_CODIGO from ALUMNO al, PROGRAMA_POSTGRADO prog,PROMOCION promo,PARALELO pl where al.PROM_CODIGO=promo.PROM_CODIGO and promo.PP_CODIGO=prog.PP_CODIGO and promo.PL_CODIGO=pl.PL_CODIGO and AL_CEDULA='" + cedula + "'");
        } catch (Exception ex) {
            Logger.getLogger(neg_alumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs2;
    }

    @Override
    public CachedRowSetImpl devolver_cronograma_alumno(String cedula, String fechai, String fechaf) {
        try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2("select prog.PP_NOMBRE,prom.PRO_NOMBRE,pa.PL_NOMBRE,modu.MOD_NOMBRE,modu.MOD_NUMEROCREDITOS,fec.FD_FECHA,fec.FD_HORA_I,fec.FD_HORA_F,(prof.PR_NOMBRES ||' '||prof.PR_apellidos) as pr_nombres,(al.AL_NOMBRES ||' '||al.al_apellidos) as al_nombres,au.AU_NUMERO,au.AU_BLOQUE,au.AU_PISO from aula au,ALUMNO al,PROMOCION prom, PROGRAMA_POSTGRADO prog, FECHA_DIA fec, MODULO modu,PARALELO pa,PROFESOR prof where fec.MOD_CODIGO=modu.MOD_CODIGO and modu.PP_CODIGO=prog.PP_CODIGO and prog.PP_CODIGO=prom.PP_CODIGO and prom.PROM_CODIGO =al.PROM_CODIGO and prom.PROM_CODIGO=fec.PROM_CODIGO and prom.PL_CODIGO=pa.PL_CODIGO and al.AL_CEDULA='" + cedula + "' and fec.AU_CODIGO=au.AU_CODIGO and fec.PR_CEDULA=prof.PR_CEDULA and to_char(fec.FD_FECHA,'yyyy-mm-dd') between '" + fechai + "'  and '" + fechaf + "' order by fec.FD_FECHA asc");
        } catch (Exception ex) {
            Logger.getLogger(neg_alumno.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs3;
    }

    @Override
    public CachedRowSetImpl getLista_correos_por_alumno(String promocion) {
        try {
            v.crs1 = (CachedRowSetImpl) ejec.rellena2("select al.al_correo from ALUMNO al where al.PROM_CODIGO='" + promocion + "'");
        } catch (Exception ex) {
            System.out.println("Error al recuperar lista de datos");
        }
        return v.crs1;
    }

    @Override
    public CachedRowSetImpl buscar_al(String nick) {
        try {
            v.crs5 = (CachedRowSetImpl) ejec.rellena2("select * from alumno where al_cedula='" + nick + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs5;
    }

    @Override
    public CachedRowSetImpl devolver_programa_promocion(String cedula) {
        try {
            v.crs4 = (CachedRowSetImpl) ejec.rellena2("select prog.PP_NOMBRE,prom.PRO_NOMBRE,pa.PL_NOMBRE from ALUMNO al,PROMOCION prom, PROGRAMA_POSTGRADO prog, PARALELO pa where prog.PP_CODIGO=prom.PP_CODIGO and prom.PROM_CODIGO =al.PROM_CODIGO and prom.PL_CODIGO=pa.PL_CODIGO and al.AL_CEDULA='" + cedula + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs4;
    }

    @Override
    public void insertarAlumno(String al_cedula, String al_promo, String al_nombres, String al_apellidos, String al_correo,String al_estado) {
        entidad.setPe_cedula(al_cedula);
        promocion.setProm_codigo(al_promo);
        entidad.setPe_nombres(al_nombres);
        entidad.setPe_apellidos(al_apellidos);
        entidad.setPe_email(al_correo);
        entidad.setAl_estado(al_estado);
        String sql = "insert into alumno (al_cedula,prom_codigo,al_nombres,al_apellidos,al_correo,al_estado) values('" + entidad.getPe_cedula() + "','" + promocion.getProm_codigo() + "','" + entidad.getPe_nombres() + "','" + entidad.getPe_apellidos() + "','" + entidad.getPe_email() + "','"+entidad.getAl_estado()+"')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void bloquear_alumno(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "update alumno set al_estado='Inactivo' where al_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        bloquear_usuario(al_codigo);
        v.msm = ejec.getMen();
        
    }

    public void bloquear_usuario(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "update usuario set u_estado='Inactivo' where u_nick='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
       
    }

    public void desbloquear_usuario(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "update usuario set u_estado='Activo' where u_nick='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
       
    }

    @Override
    public void desbloquear_alumno(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "update alumno set al_estado='Activo' where al_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        desbloquear_usuario(al_codigo);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl buscar_profesor(String cedula) {
       try {
            v.crs7 = (CachedRowSetImpl) ejec.rellena2("select pr_cedula from profesor where pr_cedula='" + cedula + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs7; 
    }
}